package propertySource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.test.context.ContextConfiguration;

/**
 * Created by ztt on 2017/9/21.
 */
@Configuration
@PropertySource("classpath:popertySource.properties")
public class PropertySourceConfig {

    @Autowired
    private Environment environment;

    @Bean
    public UserService userService(){
        return new UserService(
                environment.getProperty("user.name"),
                environment.getProperty("user.age",Integer.class),
                environment.getProperty("user.gender","默认值：男")
                );
    }

    /**
     * environment.getProperty
     * 可以指定默认值
     * 可以指定返回的类型，默认为string
     * 如果不存在则返回null
     *
     * 如果必须存在，则需要使用：
     * environment.getRequiredProperty
     * 这个不存在时则会抛出异常，上面的不会抛异常
     *
     * 如果检查是否存在，则使用：
     * enviroment.containsProperty
     *
     * 同时还提供了关于profile的方法
     * getActiveProfiles：返回激活的（可用于设置依赖于此bean的其它bean是否激活）
     * acceptsProfiles（String ... profiles）：用于判断指定的profile是否激活
     */

    /**
     * 在xml中使用方式如下：
     * <bean id="beanid" class="cn.BeanId" c:_title="${user.name}"/>
     */
}
